草庐IT

c++ - RAII 和 C++ STL

全部标签

【C++进阶(三)】STL大法--vector迭代器失效&深浅拷贝问题剖析

💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:C++从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学习C++ 🔝🔝vector-下1.前言2.什么是迭代器失效?3.迭代器失效的经典案例4.迭代器失效的解决方案5.对于reserve的深度剖析6.vector深浅拷贝问题7.vector深浅拷贝的解决方法8.总结以及拓展1.前言在阅读本篇文章前,一定要先看前集:vector深度剖析(上)本章重点:本章会重点讲解vector迭代器失效问题以及vector中的深浅拷贝问题并且简单完善一下vector的自我实现在此之前,我将在文章末尾把vector自我实现的完整代码分享给大家2.什

STL string

文章目录一、编码二、标准库中string类的使用1.构造函数和拷贝构造函数2.迭代器相关的成员函数3.容量相关的成员函数4.访问对象内容相关的成员函数5.修改对象内容相关的成员函数6.字符串操作相关的成员函数7.sting类相关的非成员函数三、vs和g++下string的结构四、string类的模拟实现一、编码计算机中只能存储二进制,不能存储现实生活中的文字,于是需要对文字进行编码输入文字时,计算机根据编码表,将文字转换为对应的二进制,输出文字时,计算机根据编码表,将二进制转换为对应的文字ASCII码就是为了可以在计算机中存储和显示英文信息由于计算机的飞速发展,为了可以在计算机中存储和显示出其

mesh导出OBJ、STL格式和win窗口调用

记录下开发过程mesh转OBJ格式mesh转STL格式二进制格式(UG打开正常)ASCII格式(UG打开报错)调用win窗口导入导出注意事项背景:客户想在UG中打开编辑好的模型,UG不支持obj格式。mesh转曲面不太现实,折中取了个STL。mesh转OBJ格式设置导出模型的零点,例如设置底面中心为导出模型的零点。floatoffsetX=0;floatoffsetY=0;floatoffsetZ=0;floatminX=float.MaxValue;floatmaxX=float.MinValue;floatminY=float.MaxValue;floatmaxY=float.MinVal

runtime error: addition of unsigned offset to 0x602000000130 overflowed to 0x60200000012c (stl_vecto

非常细节的数组越界问题!!!先看出错部分源码:while(i=0){if(target==matrix[i][j])returntrue;if(targetmatrix[i][j]){i++;}}这是正确代码:while(i=0){if(target==matrix[i][j])returntrue;if(targetmatrix[i][j]){i++;continue;}}错误原因很简单,因为j--后没有立即进行判断,即j--后可能使得j=-1,然后直接访问matrix[i][-1],导致数组越界,所以这里加上continue强制进行下一循环判断。

如何快速地在网页中展示3D模型,可以支持主流的3d格式文件的预览功能,例如stl,step,solidworks的文件

最近我们公司有个需求要加一个在线预览3d文件的功能,如果要自己撸一套渲染各种类型的3d模型需要写好多代码哦,还要包括加放大,缩小,拖拽,旋转,平移,测量,剖切,需要写太多代码啦!!然后我们就找到了分形三维(Fractal3D)-易用的在线3DCAD可视化引擎!!!!这个分形三维只需要很少的代码就可以做出来这个功能了。视频里面就是那个分形三维提供的预览功能和一些测量,剖切之类的功能。里面有个结构树的功能可以用来做boom清单。这个工具可以支持20多种主流的3d模型格式渲染在页面上,支持3d模型在网页预览的功能。下面是它可支持的文件格式清单:.stl/.gcode/.brep/.obj/.3mf/

【C++进阶(二)】STL大法--vector的深度剖析以及模拟实现

💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:C++从入门到精通⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你学习C++ 🔝🔝vector1.前言2.熟悉vector的接口函数2.1vector的构造与拷贝构造2.2vector迭代器的使用2.3vector空间相关函数2.4vector的增删查改2.41find,swap和sort2.42insert和erase2.43随机访问operator[]3.vector的模拟实现3.1vector容量相关函数3.11reverse函数3.12resize函数3.2vector的构造函数3.3vector的析构函数3.4vector的拷贝构

【C++】STL---list

STL---list一、list的介绍二、list的模拟实现1.list节点类2.list迭代器类(1)前置++(2)后置++(3)前置--、后置--(4)!=和==运算符重载(5)*解引用重载和->重载3.list类(1)迭代器(2)修改相关的接口swap()insert()erase()push_back、push_front、pop_back、pop_frontclear()(3)空链表初始化(4)构造函数(5)拷贝构造函数(6)赋值运算符重载(7)析构函数4.打印容器的接口(1)打印链表整型的接口(2)打印list的接口(3)打印容器的接口一、list的介绍list是可以在常数范围内在

【C++入门到精通】C++入门 —— deque(STL)

阅读导航前言一、deque简介1.概念2.特点二、deque使用1.基本操作(增、删、查、改)2.底层结构三、deque的缺陷四、为什么选择deque作为stack和queue的底层默认容器总结温馨提示前言文章绑定了VS平台下std::deque的源码,大家可以下载了解一下😍前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的命名空间的一些知识点以及关于C++的缺省参数、函数重载,引用和内联函数也认识了什么是类和对象以及怎么去new一个‘对象’,以及学习了几个STL的结构也相信大家都掌握的不错,接下来博主将会带领大家继续学习有关C++比较重要的知识点——deque(STL)

[C++] STL_vector 迭代器失效问题

文章目录1、前言2、情况一:底层空间改变的操作3、情况二:指定位置元素的删除操作4、g++编译器对迭代器失效检测4.1扩容4.2erase删除任意位置(非尾删)4.3erase尾删5、总结1、前言**迭代器的主要作用就是让算法能够不用关心底层数据结构,其底层实际就是一个指针,或者是对指针进行了封装,比如:string的迭代器就是原生指针char,vector的迭代器就是原生态指针T。因此迭代器失效,实际就是迭代器底层对应指针所指向的空间被销毁了,而使用一块已经被释放的空间,造成的后果是程序崩溃(即如果继续使用已经失效的迭代器,程序可能会崩溃)。对迭代器失效我们了解了,那么现在我们就分析,在ve

第九层(16):STL终章——常用集合算法

文章目录前情回顾常用集合算法set_intersectionset_unionset_difference最后一座石碑倒下,爬塔结束一点废话🎉welcome🎉✒️博主介绍:一名大一的智能制造专业学生,在学习C/C++的路上会越走越远,后面不定期更新有关C/C++语法,数据结构,算法,Linux,ue5使用,制作游戏的心得,和大家一起共同成长。✈️C++专栏:C++爬塔日记😘博客制作不易,👍点赞+⭐收藏+➕关注前情回顾在上一块石碑中,我学到了,同时下一块石碑也显露出来…🚄上章地址:第九章(15):STL之常用算术生成算法常用集合算法常用集合算法是用于得出两个容器的交集并集和差集的,有三个:set